問題二十九 Javascript 如何重新初始化陣列
Javascript 初始化陣列有兩種方法,一種方法是
var i = [1, 2,3];
i = [];
這樣就可以清空陣列囉!
另外一種是
var i = [1, 2,3];
i.length = 0;
這樣也可以初始化陣列!
但是這兩個有什麼不同呢?
一個是連記憶體位置的值都清空,一個是分配一個新的記憶體空間取代
舉例來說
var foo = [1,2,3];
var bar = [1,2,3];
var foo2 = foo;
var bar2 = bar;
foo = [];
bar.length = 0;
console.log(foo, bar, foo2, bar2);
結果會是
[] [] [1, 2, 3] []
你會發現 bar2 也一起被變更了,那是因為他們參考到同一個記憶體位置。
所以使用的時候可以多多利用這個技巧。
參考資料
https://stackoverflow.com/questions/4804235/difference-between-array-length-0-and-array